import type { RNTesterModuleInfo } from '../types/RNTesterTypes';

const Components: Array<RNTesterModuleInfo> = [
  {
    key: 'react-native-device-info',
    category: 'Tools',
    module: require('../examples/react-native-device-info/RNDeviceInfoDemo').default,
  },
  {
    key: 'react-native-picker-picker',
    category: 'Basic',
    module: require('../examples/react-native-picker-picker/App'),
  },
  {
    key: 'lottie-react-native',
    category: 'UI',
    module: require('../examples/lottie-react-native/test/LottieTest'),
  },
  {
    key: 'react-native-community/datetimepicker',
    category: 'UI',
    module: require('../examples/datetimepicker/demo/test/DateTimePickerTestDemo'),
  },
  {
    key: 'react-native-community-blur',
    category: 'UI',
    module: require('../examples/react-native-community-blur/Index'),
  },
  {
    key: 'react-native-webview',
    category: 'Basic',
    module: require('../examples/react-native-webview/tests/WebViewTest'),
  },
  {
    key: 'pager-view',
    category: 'UI',
    module: require('../examples/react-native-pager-view/PageViewTest').default,
  },
  {
    key: 'Safe-Area-Context',
    category: 'UI',
    module: require('../examples/react-native-safe-area-context/index').default,
  },
  {
    key: 'flash-list',
    category: 'UI',
    module: require('../examples/flash-list/TestIndex').default,
  },
  {
    key: 'react-native-gesture-handler',
    category: 'UI',
    module: require('../examples/react-native-gesture-handler/App').default,
  },
  {
    key: 'react-native-reanimated',
    category: 'Animated',
    module: require('../examples/react-native-reanimated/ReanimateListDemo').default,
  },
  {
    key: 'spring-scrollview',
    category: 'UI',
    module: require('../examples/react-native-spring-scrollview/APP').default,
  },
  {
    key: 'react-native-video',
    category: 'Basic',
    module: require('../examples/react-native-video/TestVideo'),
  },
  {
    key: 'masked-view',
    category: 'UI',
    module: require('../examples/masked-view/MaskedDemo').default,
  },
  {
    key: 'reactNativeCommunitySlider',
    category: 'Basic',
    module: require('../examples/react-native-community-slider/Index'),
  },
  {
    key: 'react-native-cameraroll',
    category: 'basic',
    module: require('../examples/react-native-cameraroll/test/CamerarollTest'),
  },
  {
    key: 'react-native-maps',
    category: 'basic',
    module: require('../examples/react-native-maps/Test/App'),
  },
  {
    key: '@react-navigation',
    category: 'UI',
    module: require('../examples/@react-navigation/App').default,
  },
  {
    key: 'react-navigation/drawer',
    category: 'UI',
    module: require('../examples/react-navigation-drawer/Drawer').default,
  },
  {
    key: 'react-native-drawer-layout',
    category: 'UI',
    module: require('../examples/react-native-drawer-layout/DrawerLayout').default,
  },
  {
    key: 'react-native-community-segmented-control',
    category: 'Basic',
    module: require('../examples/react-native-community-segmented-control/SegmentedControl'),
  },
  {
    key: 'ReactNativeVisionCameraView',
    category: 'Basic',
    module: require('../examples/react-native-vision-camera/test/App').default,
  },
  {
    key: 'ReactNativeImageCropPicker',
    category: 'UI',
    module: require('../examples/react-native-image-crop-picker/ImageCropPickerDemo'),
  },
  {
    key: 'react-native-blob-util',
    category: 'Basic',
    module: require('../examples/react-native-blob-util/testCase/blobTest/index'),
  },
  {
    key: 'react-native-date-picker',
    category: 'basic',
    module: require('../examples/react-native-date-picker/tester/DatePickerExample'),
  },
  {
    key: 'ReactNativeThemeSwitchAnimation',
    category: 'UI',
    module: require('../examples/react-native-theme-switch-animation/test/ReactNativeThemeSwitchAnimation'),
  },
  {
    key: 'react-native-search-bar',
    category: 'UI',
    module: require('../examples/react-native-search-bar/demo/search-bar').default,
  },
  {
    key: 'ReactNativeSignatureCaputureExample',
    category: 'UI',
    module: require('../examples/react-native-signature-capture/signatureCapture'),
  },
  {
    key: 'ReactNativeEmailLink',
    category: 'Basic',
    module: require('../examples/react-native-email-link/tester/EmailLinkExample'),
  },
  {
    key: 'ReactNativeSafeModules',
    category: 'Basic',
    module: require('../examples/react-native-safe-modules/SafeModuleExample'),
  },
  {
    key: "ReactNativeCompassHeadingExample",
    category: "UI",
    module: require("../examples/react-native-compass-heading/index"),
  },
  {
    key: 'ReactNativeThemeControl',
    category: 'UI',
    module: require('../examples/react-native-theme-control/ThemeControlTest'),
  },
  {
    key: 'ReactNativeUnistylesExample',
    category: 'UI',
    module: require('../examples/react-native-unistyles/UnistylesExample'),
  },
  {
    key: 'ReactNativeContextMenuView',
    category: 'UI',
    module: require('../examples/react-native-context-menu-view/ContextMenuViewTest'),
  },
  {
    key: 'RNShakeExampleDemo',
    category: 'UI',
    module: require('../examples/react-native-shake/ShakeExampleDemo'),
  },
  {
    key: 'MixpanelReactNative',
    category: 'UI',
    module: require('../examples/mixpanel-react-native/test/MixpanelExample'),
  },
  {
    key: 'ReactNativeMapClustering',
    category: 'Basic',
    module: require('../examples/react-native-map-clustering/map-clustering/App'),
  },
  {
    key: 'ReactNativeMultiSliderExample',
    category: 'UI',
    module: require('../examples/react-native-multi-slider/MultiSliderDemo'),
  },
  {
    key: 'ReactNativeAudioRecordPlayer',
    category: 'UI',
    module: require('../examples/react-native-audio-recorder-player/AudioRecordPlayerExample'),
  },
  {
    key: 'ReactNativeSnackbar',
    category: 'UI',
    module: require('../examples/react-native-snackbar/SnackbarDemo'),
  },
  {
    key: 'ReactNativeAppleAuthenticationExample',
    category: 'UI',
    module: require('../examples/react-native-apple-authentication/Test'),
  },
  {
    key: 'ReactNativeSystemSettingExample',
    category: 'Basic',
    module: require('../examples/react-native-system-setting/ReactNativeSystemSettingDemo'),
  },
  {
    key: 'KeyboardControllerExample',
    category: 'UI',
    module: require('../examples/react-native-keyboard-controller/index'),
  },
  {
    key: 'ReactNativeTextInputExample',
    category: 'UI',
    module: require('../examples/react-native-text-input-mask/TextInputDemo'),
  },
  {
    key: 'CreditCardExample',
    category: 'Basic',
    module: require('../examples/react-native-credit-card-input/DemoEntry').default,
  },
  {
    key: 'ReactNativeNfcManagerExample',
    category: 'Basic',
    module: require('../examples/react-native-nfc-manager/NfcManagerDemo')
  },
  {
    key: 'ReactNativeHapticFeedbackExample',
    category: 'Basic',
    module: require('../examples/react-native-haptic-feedback/Tester/HapticFeedbackExample'),
  },
  {
    key: 'ReactNativeNativewindExample',
    category: 'UI',
    module: require('../examples/nativewind/nativewind'),
  },
  {
    key: 'CustomKeyboard',
    category: 'Basic',
    module: require('../examples/react-native-custom-keyboard/App'),
  },
  {
    key: 'root-modal',
    category: 'UI',
    module: require('../examples/react-native-root-modal/main').default,
  },
  {
    key: 'ReactNativeIdleTimer',
    category: 'Basic',
    module: require('../examples/react-native-idle-timer/IdleTimerTest'),
  },
  {
    key: 'ReactNativeFileAccess',
    category: 'UI',
    module: require('../examples/react-native-file-access/ReactNativeFileAccess').default,
  },
  {
    key: 'ReactNativeBackgroundFetch',
    category: 'UI',
    module: require('../examples/react-native-background-fetch/BackroundFetchExample'),
  },
  {
    key: 'ReactNativeMaterialUiExample',
    category: 'UI',
    module: require('../examples/react-native-material-ui/index'),
  },
  {
    key: 'ReactNativeUILibExample',
    category: 'UI',
    module: require('../examples/react-native-ui-lib/App'),
  },
  {
    key: 'ReactNativeCreateThumbnailExample',
    category: 'Basic',
    module: require('../examples/react-native-create-thumbnail/CreateThumbnailDemo'),
  },
  {
    key: 'ReactNativeSkiaExample',
    category: 'UI',
    module: require('../examples/react-native-skia/skiaDemoCases/App'),
  },
  {
    key: 'ReactNativeAlipay',
    category: 'Basic',
    module: require('../examples/react-native-alipay/ReactNativeAlipayTest'),
  },
  {
    key: 'ReactNativeConfig',
    category: 'Basic',
    module: require('../examples/react-native-config/Test/RNConfigTest'),
  },
  {
    key: 'VictoryNativeXl',
    category: 'Basic',
    module: require('../examples/victory-native-xl/App'),
  }
];

const APIs: Array<RNTesterModuleInfo> = [
];

const Modules: any = {};

APIs.concat(Components).forEach(Example => {
  Modules[Example.key] = Example.module;
});

const RNTesterList = {
  APIs,
  Components,
  Modules,
};

export default RNTesterList;
